using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace Axe.Collections
{
    /*
    public interface Accessor<TKey,TValue>
    {
        TValue this[TKey key] { get; }
    }

    class DictionaryAccessor<TKey,TValue> : Accessor<TKey,TValue>
    {
        IDictionary<TKey, TValue> m_Container;

        public DictionaryAccessor(IDictionary<TKey,TValue> container)
        {
            m_Container = container;
        }

        #region Accessor<TKey,TValue> Members

        public TValue this[TKey key]
        {
            get
            {
                return m_Container[key];
            }
        }

        #endregion
    };

    public class TableDictionary<TValue> : ICollection<TValue>
    {
        Type ItemType;
        List<TValue> m_Collection = new List<TValue>();

        Dictionary<string, Dictionary<object, TValue>> hl = new Dictionary<string, Dictionary<object, TValue>>();

        public Accessor<TKey,TValue> CreateAccessor<TKey>(string fieldName)
        {
            if(hl.ContainsKey(fieldName))
            {
                // ....
            }
            else
            {
                ItemType.


                
            }
        }

        public TableDictionary()
        {
            ItemType = typeof(TValue);
        }

        #region ICollection<TValue> Members

        public void Add(TValue item)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void Clear()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public bool Contains(TValue item)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void CopyTo(TValue[] array, int arrayIndex)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public int Count
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public bool IsReadOnly
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public bool Remove(TValue item)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion

        #region IEnumerable<TValue> Members

        public IEnumerator<TValue> GetEnumerator()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion

        #region IEnumerable Members

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
    */
}
